package main

import (
	"fmt"
	"sync"
)

func main() {

	// fatal error: concurrent map read and map write
	// 并发读写 map
	// 循环变量捕获问题 - 所有 goroutine 共享相同的变量
	var group sync.WaitGroup
	group.Add(10)
	// map
	mp := make(map[string]int, 10)
	for i := 0; i < 10; i++ {
		go func() {
			// 写操作
			for i := 0; i < 100; i++ {
				mp["helloworld"] = 1
			}
			// 读操作
			for i := 0; i < 10; i++ {
				fmt.Println(mp["helloworld"])
			}
			group.Done()
		}()
	}
	group.Wait()
}
